module abstract_read_wrf_nmm_guess_mod
  type, abstract :: abstract_read_wrf_nmm_guess_class
  contains
    procedure(read_wrf_nmm_binary_guess), deferred, pass(this) :: read_wrf_nmm_binary_guess 
    procedure(read_wrf_nmm_netcdf_guess), deferred, pass(this) :: read_wrf_nmm_netcdf_guess
    procedure(read_nems_nmmb_guess), deferred, pass(this) :: read_nems_nmmb_guess
  end type abstract_read_wrf_nmm_guess_class

  abstract interface
  subroutine read_wrf_nmm_binary_guess(this,mype)
    use kinds, only: i_kind
    import abstract_read_wrf_nmm_guess_class
    implicit none
    class(abstract_read_wrf_nmm_guess_class),intent(inout) :: this
    integer(i_kind),intent(in):: mype
  end subroutine read_wrf_nmm_binary_guess
  end interface

  abstract interface
  subroutine read_wrf_nmm_netcdf_guess(this,mype)
    use kinds, only: i_kind
    import abstract_read_wrf_nmm_guess_class
    implicit none
    class(abstract_read_wrf_nmm_guess_class),intent(inout) :: this
    integer(i_kind),intent(in):: mype
  end subroutine read_wrf_nmm_netcdf_guess
  end interface

  abstract interface
  subroutine read_nems_nmmb_guess(this,mype)
    use kinds, only: i_kind
    import abstract_read_wrf_nmm_guess_class
    implicit none
    class(abstract_read_wrf_nmm_guess_class),intent(inout) :: this
    integer(i_kind),intent(in):: mype
  end subroutine read_nems_nmmb_guess
  end interface

end module abstract_read_wrf_nmm_guess_mod
